package com.wicket.okrframework.biz.service.nb;

import cn.hutool.core.bean.BeanUtil;
import com.wicket.okrcomponent.common.annotations.BanAuto;
import com.wicket.okrframework.biz.service.dto.common.*;
import com.wicket.okrframework.biz.service.dto.req.QueryGradeScopeDataClassListReqDto;
import com.wicket.okrframework.biz.service.dto.res.QueryGradeScopeDataClassListRespDto;
import org.apache.skywalking.apm.toolkit.trace.Tag;
import org.apache.skywalking.apm.toolkit.trace.Tags;
import org.apache.skywalking.apm.toolkit.trace.Trace;
import org.springframework.stereotype.Service;

/**
 * @author ： 手工接入方法
 * @since 2022/5/28 15:32
 *
 *
 * @version 1.0
 */
@Service
public class NbPostType {
    /**
     * code:dataAucClassification
     * name:M查询岗位类型等级范围数据分类列表
     * desc:undefined
     **/
    @BanAuto
    @Trace(operationName = "M查询岗位类型等级范围数据分类列表")
    @Tags({@Tag(key = "参数", value = "arg[0]"),
            @Tag(key = "返回值", value = "returnedObj")})
    public QueryGradeScopeDataClassListRespDto queryGradeScopeDataClassList(QueryGradeScopeDataClassListReqDto reqDto) {
        QueryGradeScopeDataClassListRespDto retData = new QueryGradeScopeDataClassListRespDto();
        for (OrgGradeScopeDto oneOrgGrade : reqDto.getOrgGradeScopeList()) {
            for (GradeScopeDataDto oneGrade : reqDto.getGradeScopeDataList()) {
                if (!oneOrgGrade.getStationGradeId().equals(oneGrade.getStationGradeId())) {
                    NewOrgGradeScopeDto newOne = new NewOrgGradeScopeDto();
                    BeanUtil.copyProperties(oneOrgGrade, newOne);
                    retData.getNewOrgGradeScopeList().add(newOne);
                }
            }
        }
        //逻辑：
        //1、通过分类标识（字段模式-CLASSIFICATION_ID）对两个数据集进行比较
        //2、新增：第一个数据集不在第二个数据集内的数据
        //      删除：第二个数据集不在第一个数据内的数据，并且第二个数据集对象主体生命周期状态为正在编辑
        //      想存档：第二个数据集不在第一个数据内的数据，并且第二个数据集对象主体生命周期状态为当前有效、存档类型为未存档
        //              撤销想存档：第二个数据集在第一个数据内的数据，并且第二个数据集对象主体生命周期状态为当前有效、存档类型为想存档
        for (GradeScopeDataDto oneGrade : reqDto.getGradeScopeDataList()) {
            for (OrgGradeScopeDto oneOrg : reqDto.getOrgGradeScopeList()) {
                if (!oneGrade.getStationGradeId().equals(oneOrg.getStationGradeId())) {
                    if (oneGrade.getSubjectLifeCycle() == "EDITING") {
                        DelOrgGradeScopeDto delOne = new DelOrgGradeScopeDto();
                        BeanUtil.copyProperties(oneGrade, delOne);
                        retData.getDelOrgGradeScopeList().add(delOne);
                    } else if (oneGrade.getSubjectLifeCycle().equals("CURRENTLY_VALID") && oneGrade.getArchivngType().equals("NOT_ARCHIVE")) {
                        ArcOrgGradeScopeDto arcOne = new ArcOrgGradeScopeDto();
                        BeanUtil.copyProperties(oneGrade, arcOne);
                        retData.getArcOrgGradeScopeList().add(arcOne);
                    } else if (oneGrade.getSubjectLifeCycle().equals("CURRENTLY_VALID") && oneGrade.getArchivngType().equals("TOBE_ARCHIVING")) {
                        UndoArcOrgGradeScopeDto unArcOne = new UndoArcOrgGradeScopeDto();
                        BeanUtil.copyProperties(oneGrade, unArcOne);
                        retData.getUndoArcOrgGradeScopeList().add(unArcOne);
                    }
                }
            }
        }
        return retData;
    }
    //手工接入方法
}
